home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / lib / include / dev / hppi.h < prev    next >
C/C++ Source or Header  |  1992-11-17  |  20KB  |  813 lines

  1. /*
  2.  * hppi.h --
  3.  *
  4.  *    Declarations for commands specific to the Thinking Machines
  5.  *    HIPPI-S and HIPPI-D boards.
  6.  *
  7.  * Copyright 1990 Regents of the University of California
  8.  * Permission to use, copy, modify, and distribute this
  9.  * software and its documentation for any purpose and without
  10.  * fee is hereby granted, provided that the above copyright
  11.  * notice appear in all copies.  The University of California
  12.  * makes no representations about the suitability of this
  13.  * software for any purpose.  It is provided "as is" without
  14.  * express or implied warranty.
  15.  *
  16.  * $Header: /sprite/src/lib/include/dev/RCS/hppi.h,v 1.12 92/07/28 16:34:56 elm Exp Locker: elm $ SPRITE (Berkeley)
  17.  */
  18.  
  19. #ifndef _HPPI
  20. #define _HPPI
  21.  
  22. typedef unsigned char uint8;
  23.  
  24. /*
  25.  * IOControl calls for the HPPI interface.
  26.  */
  27. #define IOC_HPPI        (20 << 16)
  28.  
  29. #define IOC_HPPI_LOAD            (IOC_HPPI | 2)
  30. #define IOC_HPPI_GO            (IOC_HPPI | 3)
  31. #define IOC_HPPI_DEBUG            (IOC_HPPI | 4)
  32. #define IOC_HPPI_TRACE            (IOC_HPPI | 5)
  33. #define IOC_HPPI_MAP_THRESHOLD        (IOC_HPPI | 6)
  34. #define IOC_HPPI_ECHO            (IOC_HPPI | 7)
  35. #define IOC_HPPI_RESET            (IOC_HPPI | 8)
  36. #define IOC_HPPI_SRC_RESET        (IOC_HPPI | 9)
  37. #define IOC_HPPI_DST_RESET        (IOC_HPPI | 10)
  38. #define IOC_HPPI_HARD_RESET        (IOC_HPPI | 11)
  39. #define IOC_HPPI_SETUP            (IOC_HPPI | 12)
  40. #define IOC_HPPI_GET_ADAP_INFO        (IOC_HPPI | 13)
  41. #define IOC_HPPI_DIAG            (IOC_HPPI | 14)
  42. #define IOC_HPPI_EXTENDED_DIAG        (IOC_HPPI | 15)
  43. #define IOC_HPPI_START            (IOC_HPPI | 16)
  44. #define IOC_HPPI_COLLECT_STATS        (IOC_HPPI | 17)
  45. #define IOC_HPPI_GET_STATS        (IOC_HPPI | 18)
  46. #define IOC_HPPI_CLEAR_STATS        (IOC_HPPI | 19)
  47. #define IOC_HPPI_SET_FLAGS        (IOC_HPPI | 20)
  48. #define IOC_HPPI_GET_FLAGS        (IOC_HPPI | 21)
  49. #define IOC_HPPI_RESET_FLAGS        (IOC_HPPI | 22)
  50. #define IOC_HPPI_SOURCE            (IOC_HPPI | 23)
  51. #define IOC_HPPI_SINK            (IOC_HPPI | 24)
  52. #define IOC_HPPI_SEND_DGRAM        (IOC_HPPI | 25)
  53. #define IOC_HPPI_ADDRESS        (IOC_HPPI | 26)
  54. #define IOC_HPPI_SRC_ROM_CMD        (IOC_HPPI | 27)
  55. #define IOC_HPPI_DST_ROM_CMD        (IOC_HPPI | 28)
  56. #define IOC_HPPI_WRITE_REG        (IOC_HPPI | 29)
  57. #define IOC_HPPI_READ_REG        (IOC_HPPI | 30)
  58. #define IOC_HPPI_READ_BOARD_WORD    (IOC_HPPI | 31)
  59. #define IOC_HPPI_WRITE_BOARD_WORD    (IOC_HPPI | 32)
  60. #define IOC_HPPI_SET_BOARD_FLAGS    (IOC_HPPI | 33)
  61. #define IOC_HPPI_SET_SRC_BOARD_FLAGS    (IOC_HPPI | 34)
  62. #define IOC_HPPI_SET_DST_BOARD_FLAGS    (IOC_HPPI | 35)
  63. #define    IOC_HPPI_RECV_DGRAM        (IOC_HPPI | 36)
  64. #define    IOC_HPPI_SET_TSAP        (IOC_HPPI | 37)
  65. #define    IOC_HPPI_CONNECTION_LISTEN    (IOC_HPPI | 38)
  66. #define    IOC_HPPI_CONNECTION_OPEN    (IOC_HPPI | 39)
  67. #define    IOC_HPPI_CONNECTION_SEND    (IOC_HPPI | 40)
  68. #define    IOC_HPPI_CONNECTION_RECV    (IOC_HPPI | 41)
  69. #define    IOC_HPPI_CONNECTION_CLOSE    (IOC_HPPI | 42)
  70. #define    IOC_HPPI_IOP_OUTPUT        (IOC_HPPI | 43)
  71. #define    IOC_HPPI_SET_XBUS_BOARD        (IOC_HPPI | 44)
  72.  
  73. #define    DEV_HPPI_FILLED_XRB    0x1
  74. #define    DEV_HPPI_FILLED_CMD    0x2
  75.  
  76. typedef unsigned short uint16;
  77. typedef unsigned long uint32;
  78.  
  79. typedef struct Dev_HppiCmdHdr {
  80.     unsigned char opcode;
  81.     unsigned char serial;
  82.     uint16 magic;
  83. } Dev_HppiCmdHdr;
  84.  
  85. typedef struct Dev_HppiSetTrace {
  86.     Dev_HppiCmdHdr hdr;
  87.     uint32 level;
  88. } Dev_HppiSetTrace;
  89.  
  90. typedef struct Dev_HppiDumpTrace {
  91.     Dev_HppiCmdHdr hdr;
  92. } Dev_HppiDumpTrace;
  93.  
  94. typedef struct Dev_HppiClearTrace {
  95.     Dev_HppiCmdHdr hdr;
  96. } Dev_HppiClearTrace;
  97.  
  98. typedef struct Dev_HppiOutput {
  99.     Dev_HppiCmdHdr hdr;
  100.     uint32 fifoDataSize;
  101.     uint32 iopDataSize;
  102. } Dev_HppiOutput;
  103.  
  104. typedef struct Dev_HppiOutputTrace {
  105.     Dev_HppiCmdHdr hdr;
  106.     uint32 fifoDataSize;
  107.     uint32 iopDataSize;
  108. } Dev_HppiOutputTrace;
  109.  
  110. typedef struct Dev_HppiReset {
  111.     Dev_HppiCmdHdr hdr;
  112. } Dev_HppiReset;
  113.  
  114. typedef struct Dev_HppiScatterGatherElement {
  115.     uint32 address;
  116.     uint32 size;
  117. } Dev_HppiScatterGatherElement;
  118.  
  119. typedef struct Dev_HppiScatterGather {
  120.     Dev_HppiCmdHdr hdr;
  121.     uint16    size;
  122.     uint8    tag;
  123.     uint8    FILLER1;
  124.     uint32    offset;            /* offset within connection */
  125.     Dev_HppiScatterGatherElement element[128];
  126. } Dev_HppiScatterGather;
  127.  
  128. typedef struct Dev_HppiScatterGatherTrace {
  129.     Dev_HppiCmdHdr hdr;
  130.     uint16 size;
  131.     uint16 tag;
  132.     Dev_HppiScatterGatherElement element[128];
  133. } Dev_HppiScatterGatherTrace;
  134.  
  135. typedef struct Dev_HppiSetup {
  136.     Dev_HppiCmdHdr hdr;
  137.     uint32    reqBlockSize;
  138.     uint32    queueAddress;
  139.     uint32    queueSize;
  140. } Dev_HppiSetup;
  141.  
  142. /*
  143.  * The standard XRB command header.  All of the Dev_HppiSend commands use
  144.  * this XRB information, and thus include the structure.
  145.  */
  146. typedef struct Dev_HppiStdXRB {
  147.     uint16    xrbRef;        /* XRB reference number (IDs connection) */
  148.     uint8    status;        /* status returned from hub */
  149.     uint8    tag;        /* to match with scatter-gather array */
  150.     uint32    xrbId;        /* Used to identify command on return */
  151.     uint32    xrbBufId;    /* Also used to identify returned command */
  152. } Dev_HppiStdXRB;
  153.  
  154. typedef struct Dev_HppiSendOPEN {
  155.     Dev_HppiCmdHdr    hdr;
  156.     Dev_HppiStdXRB    xrbHdr;
  157. } Dev_HppiSendOPEN;
  158.  
  159. /*
  160.  * This command tells the HPPI boards to listen for a connection.  When a
  161.  * connection request is received, this command is put into the ring buffer
  162.  * with the xrbRef and status fields filled in.
  163.  */
  164. typedef struct Dev_HppiSendALSN {
  165.     Dev_HppiCmdHdr    hdr;
  166.     Dev_HppiStdXRB    xrbHdr;
  167.     uint8        xrbConPar[16];    /* connection parameters */
  168.     uint8        xrbRemTA[7];    /* remote address */
  169.     uint8        FILLER2;
  170.     uint8        xrbLocTA[7];    /* local address */
  171.     uint8        FILLER3;
  172.     uint8        tsap[4];
  173. } Dev_HppiSendALSN;
  174.  
  175. typedef struct Dev_HppiSendCONN {
  176.     Dev_HppiCmdHdr    hdr;
  177.     Dev_HppiStdXRB    xrbHdr;
  178.     uint8        xrbConPar[16];    /* connection parameters */
  179.     uint8        xrbRemTA[7];    /* remote address */
  180.     uint8        FILLER2;
  181.     uint8        xrbLocTA[7];    /* local address */
  182.     uint8        FILLER3;
  183.     uint8        tsap[4];
  184. }  Dev_HppiSendCONN;
  185.  
  186. /*
  187.  * Send a close connection request to the client.  This is more of an abort
  188.  * than a close, since it simply tears down the connection without giving
  189.  * a reason.
  190.  */
  191. typedef struct Dev_HppiSendCLSE {
  192.     Dev_HppiCmdHdr    hdr;
  193.     Dev_HppiStdXRB    xrbHdr;
  194. }  Dev_HppiSendCLSE;
  195.  
  196. /*
  197.  * Send a close connection request to the client.  This request is a more
  198.  * graceful exit.
  199.  */
  200. typedef struct Dev_HppiSendRLSE {
  201.     Dev_HppiCmdHdr    hdr;
  202.     Dev_HppiStdXRB    xrbHdr;
  203.     uint16        xrbISOCode;    /* reason for releasing connection */
  204.     uint16        FILLER1;
  205. }  Dev_HppiSendRLSE;
  206.  
  207. typedef struct Dev_HppiSendXfer {
  208.     Dev_HppiCmdHdr    hdr;
  209.     Dev_HppiStdXRB    xrbHdr;
  210.     uint32        cnt;        /* size of transfer */
  211. }  Dev_HppiSendXfer;
  212.  
  213. typedef struct Dev_HppiSendDRCV {
  214.     Dev_HppiCmdHdr    hdr;
  215.     Dev_HppiStdXRB    xrbHdr;
  216.     uint8        xrbRemTA[7];    /* remote address */
  217.     uint8        FILLER2;
  218.     uint8        xrbLocTA[7];    /* local address */
  219.     uint8        FILLER3;
  220.     uint8        tsap[4];
  221.     uint8        xrbDG[6];    /* datagram parameters */
  222.     uint16        FILLER4;
  223.     uint32        cnt;    /* size of received datagram (in & out) */
  224. }  Dev_HppiSendDRCV;
  225.  
  226. typedef struct Dev_HppiSendDSND {
  227.     Dev_HppiCmdHdr    hdr;
  228.     Dev_HppiStdXRB    xrbHdr;
  229.     uint8        xrbRemTA[7];    /* remote address */
  230.     uint8        FILLER2;
  231.     uint8        xrbLocTA[7];    /* local address */
  232.     uint8        FILLER3;
  233.     uint8        tsap[4];
  234.     uint8        xrbDG[6];    /* datagram parameters */
  235.     uint16        FILLER4;
  236.     uint32        fifoDataSize;    /* amount of data to read from FIFO */
  237.     uint32        iopDataSize;    /* amount of data to read from IOP */
  238. }  Dev_HppiSendDSND;
  239.  
  240. typedef struct Dev_HppiDMAInfo {
  241.     unsigned char    cmd;        /* The DMA command.  See below. */
  242.     unsigned char    id;        /* Transaction id. Set to 0. */
  243.     unsigned short    VCref;        /* VC reference. Set to 0. */
  244.     unsigned int    offset;        /* Buffer offset. Set to 0. */
  245.     unsigned int    reference;    /* Unused. */
  246.     unsigned int    length;        /* Length of the DMA (size of the
  247.                      * XRB minus this structure). */
  248. } Dev_HppiDMAInfo;
  249.  
  250. typedef struct Dev_HppiOutputPattern {
  251.     Dev_HppiCmdHdr    hdr;
  252.     uint32        size;
  253.     uint32        start;
  254.     uint32        increment;
  255. } Dev_HppiOutputPattern;
  256.  
  257. typedef struct Dev_HppiErrorMsg {
  258.     uint32 magic;
  259.     uint32 errorType;
  260.     uint32 errorInfoLength;        /* # of words that follow which
  261.                      * describe the error that occurred */
  262. } Dev_HppiErrorMsg;
  263.  
  264. typedef struct Dev_HppiCopyDataMsg {
  265.     uint16 size;
  266.     uint16 magic;
  267.     Dev_HppiDMAInfo dmaWord;
  268.     Dev_HppiScatterGatherElement element[128];
  269. } Dev_HppiCopyDataMsg;
  270.  
  271. typedef struct Dev_HppiDoDMA {
  272.     uint16 size;
  273.     uint16 magic;
  274.     uint32 vmeAddress;
  275. } Dev_HppiDoDMA;
  276.  
  277. typedef struct Dev_HppiRegCmd {
  278.     int        board;
  279.     uint32    offset;
  280.     uint32    value;
  281. } Dev_HppiRegCmd;
  282.  
  283. typedef struct Dev_HppiGo {
  284.     int        board;
  285.     uint32    startAddress;
  286. } Dev_HppiGo;
  287.  
  288. typedef struct Dev_HppiLoadHdr {
  289.     int        board;
  290.     uint32    startAddress;
  291.     uint32    size;
  292. } Dev_HppiLoadHdr;
  293.  
  294. typedef struct Dev_HppiMemory {
  295.     Dev_HppiCmdHdr hdr;
  296.     uint32 address;
  297.     uint32 value;
  298. } Dev_HppiMemory;
  299.  
  300. typedef struct Dev_HppiSetBoardFlags {
  301.     Dev_HppiCmdHdr hdr;
  302.     uint32 flags;
  303. } Dev_HppiSetBoardFlags;
  304.  
  305. #define DEV_HPPI_FLAG_DEBUG        (1 << 0)
  306. #define DEV_HPPI_FLAG_LOOPBACK_PORT    (1 << 1)
  307. #define DEV_HPPI_FLAG_STANDARD_PORT    (1 << 2)
  308. #define DEV_HPPI_FLAG_ABORT_CONN_ON_ERROR (1 << 3)
  309. #define    DEV_HPPI_FLAG_DEBUG_DATA    (1 << 4)
  310. #define    DEV_HPPI_FLAG_DEBUG_PROC    (1 << 5)
  311. #define DEV_HPPI_FLAG_DEBUG_MISC    (1 << 6)
  312. #define DEV_HPPI_FLAG_XBOARD_SLOT_SHIFT    (7)
  313. #define    DEV_HPPI_FLAG_XBOARD_SLOT_MASK    (7 << DEV_HPPI_FLAG_XBOARD_SLOT_SHIFT)
  314.  
  315. #define DEV_HPPI_SRC_BOARD        0x1
  316. #define DEV_HPPI_DST_BOARD        0x2
  317. #define DEV_HPPI_IOP_BOARD        0x10
  318.  
  319. #define    DEV_HPPI_SRC_MAGIC        0xfade
  320. #define DEV_HPPI_DEST_MAGIC        0xcafe
  321. #define DEV_HPPI_ERR_MAGIC        0xdeadfad
  322. #define DEV_HPPI_COPY_MAGIC        0xface
  323. #define DEV_HPPI_DMA_MAGIC        0xaced
  324. #define    DEV_HPPI_INTR_MAGIC        0xbeef1234
  325.  
  326. #define DEV_HPPI_SET_TRACE        0x00
  327. #define DEV_HPPI_DUMP_TRACE        0x01
  328. #define DEV_HPPI_CLEAR_TRACE        0x02
  329. #define DEV_HPPI_OUTPUT            0x03
  330. #define DEV_HPPI_OUTPUT_TRACE        0x43
  331. #define DEV_HPPI_RESET            0x04
  332. #define DEV_HPPI_SCATTER_GATHER        0x05
  333. #define    DEV_HPPI_SCATTER_GATHER_TRACE    0x45
  334. #define DEV_HPPI_SETUP            0x06
  335. #define DEV_HPPI_READ_MEMORY        0X07
  336. #define DEV_HPPI_WRITE_MEMORY        0x08
  337. #define DEV_HPPI_SET_BOARD_FLAGS    0x09
  338. #define    DEV_HPPI_OUTPUT_TO_IOP        0x0a
  339. #define    DEV_HPPI_INPUT_FROM_IOP        0x0b
  340. #define DEV_HPPI_SEND_ALSN        0x0c
  341. #define DEV_HPPI_SEND_CONN        0x0d
  342. #define DEV_HPPI_SEND_CLSE        0x0e
  343. #define DEV_HPPI_SEND_RLSE        0x0f
  344. #define DEV_HPPI_SEND_SEND        0x10
  345. #define    DEV_HPPI_SEND_SEOM        0x11
  346. #define    DEV_HPPI_SEND_RECV        0x12
  347. #define DEV_HPPI_SEND_DRCV        0x18
  348. #define DEV_HPPI_SEND_DSND        0x19
  349. #define    DEV_HPPI_SEND_OPEN        0x1a
  350. #define    DEV_HPPI_OUTPUT_PATTERN        0x63
  351.  
  352. #define DEV_HPPI_MAX_ROM_CMD_SIZE    1000
  353. #define DEV_HPPI_LOAD_REQUEST        0
  354. #define DEV_HPPI_GO_REQUEST        0
  355.  
  356. /*
  357.  * Interrupt bits for the HPPI-D board
  358.  */
  359. #define DEV_HPPI_DST_INTR_CBIAVAIL    0x40    /* CBI cmd register avail */
  360. #define DEV_HPPI_DST_INTR_GEN        0x20    /* generic interrupt */
  361. #define DEV_HPPI_DST_INTR_PARITY    0x10    /* parity error occurred */
  362. #define DEV_HPPI_DST_INTR_ACCESS    0x08    /* access error occurred */
  363. #define DEV_HPPI_DST_INTR_IFIFO_EMPTY    0x04    /* data input fifo empty */
  364. #define DEV_HPPI_DST_INTR_OFIFO_READY    0x02    /* data output fifo has data */
  365. #define DEV_HPPI_DST_INTR_CBIRESPONSE    0x01    /* CBI response reg written */
  366. #define DEV_HPPI_DST_INTR_ALL        (DEV_HPPI_DST_INTR_CBIAVAIL | \
  367.                      DEV_HPPI_DST_INTR_GEN | \
  368.                      DEV_HPPI_DST_INTR_PARITY | \
  369.                      DEV_HPPI_DST_INTR_ACCESS | \
  370.                      DEV_HPPI_DST_INTR_IFIFO_EMPTY | \
  371.                      DEV_HPPI_DST_INTR_OFIFO_READY | \
  372.                      DEV_HPPI_DST_INTR_CBIRESPONSE)
  373.  
  374. #define DEV_HPPI_OFIFO_HF        (1 << 21)
  375. #define DEV_HPPI_OFIFO_FULL        (1 << 20)
  376. #define DEV_HPPI_OFIFO_EMPTY        (1 << 19)
  377. #define DEV_HPPI_IFIFO_HF        (1 << 18)
  378. #define DEV_HPPI_IFIFO_FULL        (1 << 17)
  379. #define DEV_HPPI_IFIFO_EMPTY        (1 << 16)
  380.  
  381. #define DEV_HPPI_MAX_ROM_REPLY        0x8
  382.  
  383. #define DEV_HPPI_IFIFO_DEPTH        1024
  384.  
  385. /*
  386.  * Bits in the configuration register that enable various
  387.  * interrupts.
  388.  */
  389. #define DEV_HPPI_INTR_ENB_29K        (1 << 28)    /* 29K interrupts */
  390. #define DEV_HPPI_INTR_ENB_PARITY    (1 << 27)    /* SM DOUT parity */
  391. #define DEV_HPPI_INTR_ENB_ACCESS_ERROR    (1 << 26)    /* VMEbus access error
  392.                              * has occurred */
  393. #define DEV_HPPI_INTR_ENB_IFIFO_EMPTY    (1 << 25)    /* input fifo is
  394.                              * empty */
  395. #define DEV_HPPI_INTR_ENB_OFIFO_DATA    (1 << 24)    /* output fifo has
  396.                              * data */
  397. #define DEV_HPPI_INTR_ENB        (1 << 11)    /* This bit must be
  398.                              * set to enable
  399.                              * any interrupts */
  400. #define DEV_HPPI_INTR_ROAK        (1 << 21)    /* interrupts should
  401.                                release on ack */
  402. #define DEV_HPPI_BUS_REQ_SHIFT        19        /* shift left this
  403.                              * many places for
  404.                              * bus req level */
  405. /*
  406.  * These are the ROM commands.
  407.  */
  408.  
  409. #define    DEV_HPPI_FIRST_DIAG_CODE    0x80
  410. #define    DEV_HPPI_REPORT_PU_STATUS    REQ_ID_FIRST_DIAG_CODE
  411. #define    DEV_HPPI_GET_MEMORY        0x81
  412. #define    DEV_HPPI_PUT_MEMORY        0x82
  413. #define    DEV_HPPI_DO_CHECKSUM        0x83
  414. #define    DEV_HPPI_TEST_CHECKSUM        0x84
  415. #define    DEV_HPPI_FILL_MEMORY        0x85
  416. #define    DEV_HPPI_VERIFY_MEMORY        0x86
  417. #define    DEV_HPPI_START_CODES        0x87
  418. #define    DEV_HPPI_ECHO            0x88
  419. #define    DEV_HPPI_LOOP_WRITE        0x89
  420. #define    DEV_HPPI_LOOP_READ        0x8a
  421. #define    DEV_HPPI_TEST_RAM        0x8b
  422. #define    DEV_HPPI_TEST_AL        0x8c    /* test address lines    */
  423. #define    DEV_HPPI_BYTE_TEST        0x8d    /* test byte access    */
  424. #define    DEV_HPPI_MONITOR_REGISTER    0x8e    /* continuously monitor    */
  425. #define DEV_HPPI_SIZE_SMO_FIFO        0x8f    /* measure SM Data Out Fifo */
  426.  
  427. #define    DEV_HPPI_END_CONNECTION        0xa0    /* event bit 13        */
  428. #define    DEV_HPPI_MAKE_CONNECTION    0xa1    /* event bit 12        */
  429. #define    DEV_HPPI_SEND_BURST        0xa2    /* send test burst data    */
  430. #define    DEV_HPPI_ENTER_RECEIVE_MODE    0xa3
  431. #define    DEV_HPPI_BURST_DATA        0xa4
  432. #define    DEV_HPPI_HPPIS_SESSION        0xa5    /* do a source session    */
  433.  
  434. #define    DEV_HPPI_WRITE_FIFO        0xa6    /* write to fifo    */
  435. #define    DEV_HPPI_READ_FIFO        0xa7    /* read from fifo    */
  436.  
  437. #define    DEV_HPPI_NAK            -1
  438.  
  439.  
  440. typedef    struct
  441. {
  442. int    length;
  443. int    response_id;
  444. int    caller_pid;
  445. int    status;
  446. int    error_code;
  447. int    content [1]; /* up to fifo size */
  448. }PACKET_RESPONSE;
  449.  
  450. typedef    struct
  451. {
  452. int    length;
  453. int    command_id;
  454. int    caller_id;
  455. int    content [1]; /* up to fifo size */
  456. }PACKET_COMMAND;
  457.  
  458. /*
  459.  * Structures for the various ROM commands and responses.
  460.  */
  461. typedef    struct Dev_HppiRomCmdHdr {
  462.     int        length;
  463.     int        commandId;
  464.     int        callerPid;
  465. } Dev_HppiRomCmdHdr;
  466.  
  467. typedef    struct Dev_HppiRomReplyHdr {
  468.     int        length;
  469.     int        responseId;
  470.     int        callerPid;
  471.     int        status;
  472.     int        errorCode;
  473. } Dev_HppiRomReplyHdr;
  474.  
  475. #define    ID_SIZE        64
  476. #define    TYPE_ROM    1
  477. #define    TYPE_RAM    2
  478.  
  479. typedef    struct Dev_HppiRomStatusReport {
  480.     Dev_HppiRomReplyHdr    hdr;
  481.     int            executiveType;
  482.     int            version;
  483.     char        id[ID_SIZE];
  484. } Dev_HppiRomStatusReport;
  485.  
  486. typedef    struct Dev_HppiRomWrite {
  487.     Dev_HppiRomCmdHdr    hdr;
  488.     int            writeAddress;
  489.     int            writeWords;
  490.     int            data[1];        /* up to fifo size */
  491. } Dev_HppiRomWrite;
  492.  
  493. typedef    struct Dev_HppiRomWriteReply {
  494.     Dev_HppiRomReplyHdr    hdr;
  495.     int            addressWritten;
  496.     int            wordsWritten;
  497. } Dev_HppiRomWriteReply;
  498.  
  499. typedef    struct Dev_HppiRomRead {
  500.     Dev_HppiRomCmdHdr    hdr;
  501.     int            readAddress;
  502.     int            readWords;
  503. } Dev_HppiRomRead;
  504.  
  505. typedef    struct Dev_HppiRomReadReply {
  506.     Dev_HppiRomReplyHdr    hdr;
  507.     int            addressRead;
  508.     int            wordsRead;
  509.     int            dataRead [1];        /* up to fifo size */
  510. } Dev_HppiRomReadReply;
  511.  
  512. typedef    struct Dev_HppiRomGo {
  513.     Dev_HppiRomCmdHdr    hdr;
  514.     int            startAddress;
  515. } Dev_HppiRomGo;
  516.  
  517. typedef    struct Dev_HppiRomGoReply {
  518.     Dev_HppiRomReplyHdr    hdr;
  519.     int            startAddress;
  520. } Dev_HppiRomGoReply;
  521.  
  522.  
  523. #if 0
  524. typedef    struct
  525. {
  526. int    length;
  527. int    response_id;
  528. int    caller_pid;
  529. int    address_to_fill;
  530. int    words_to_fill;
  531. int    pattern_to_fill;
  532. int    fill_increment;
  533. }FILL_COMMAND;
  534.  
  535. typedef    struct
  536. {
  537. int    length;
  538. int    response_id;
  539. int    caller_pid;
  540. int    status;
  541. int    error_code;
  542. int    address_filled;
  543. int    words_filled;
  544. int    pattern_filled;
  545. int    fill_increment;
  546. }FILL_RESPONSE;
  547.  
  548. typedef    struct
  549. {
  550. int    length;
  551. int    response_id;
  552. int    caller_pid;
  553. int    address_to_verify;
  554. int      words_to_verify;
  555. int    pattern_to_verify;
  556. int    verify_increment;
  557. }VERIFY_COMMAND;
  558.  
  559. typedef    struct
  560. {
  561. int    length;
  562. int    response_id;
  563. int    caller_pid;
  564. int    status;
  565. int    error_code;
  566. int    address_verified;
  567. int    words_verified;
  568. int    pattern_verified;
  569. int    verify_increment;
  570. int    bad_data;
  571. }VERIFY_RESPONSE;
  572.  
  573. typedef    struct
  574. {
  575. int    length;
  576. int    response_id;
  577. int    caller_pid;
  578. int    start_address;
  579. int    size_to_check;
  580. }CHECKSUM_COMMAND;
  581.  
  582. typedef    struct
  583. {
  584. int    length;
  585. int    response_id;
  586. int    caller_pid;
  587. int    status;
  588. int    error_code;
  589. int    start_address;
  590. int    size_to_check;
  591. int    checksum;
  592. }CHECKSUM_RESPONSE;
  593.  
  594. typedef    struct
  595. {
  596. int    length;
  597. int    response_id;
  598. int    caller_pid;
  599. int    start_address;
  600. int    size_to_check;
  601. }TEST_CHECKSUM_COMMAND;
  602.  
  603. typedef    struct
  604. {
  605. int    length;
  606. int    response_id;
  607. int    caller_pid;
  608. int    status;
  609. int    error_code;
  610. int    start_address;
  611. int    size_to_check;
  612. int    checksum;
  613. int    old_checksum;
  614. }TEST_CHECKSUM_RESPONSE;
  615.  
  616. typedef    struct
  617. {
  618. COMMAND_HEADER    header;
  619. int        address_to_write;
  620. int        write_pattern;
  621. int        delay_between_write;
  622. } WRITE_LOOP_COMMAND;
  623.  
  624.  
  625. typedef    struct
  626. {
  627. RESPONSE_HEADER    header;
  628. int        address_to_write;
  629. int        write_pattern;
  630. int        delay_between_write;
  631. } WRITE_LOOP_RESPONSE;
  632.  
  633. typedef    struct
  634. {
  635. COMMAND_HEADER    header;
  636. int        address_to_read;
  637. int        delay_between_read;
  638. BOOLEAN        send_read_data_to_host;
  639. } READ_LOOP_COMMAND;
  640.  
  641. typedef    struct
  642. {
  643. RESPONSE_HEADER    header;
  644. int        address_to_read;
  645. int            delay_between_read;
  646. int        data_just_read;
  647. } READ_LOOP_RESPONSE;
  648.  
  649. typedef    struct
  650. {
  651. COMMAND_HEADER    header;
  652. int        start_addr;
  653. int        stop_addr;
  654. } TEST_RAM_COMMAND;
  655.  
  656. typedef    struct
  657. {
  658. RESPONSE_HEADER    header;
  659. int        failed_addr;
  660. int        read_back;
  661. int        expected;
  662. } TEST_RAM_RESPONSE;
  663.  
  664. typedef    struct
  665. {
  666. COMMAND_HEADER    header;
  667. int        base_address;
  668. int        stop_address;
  669. } TEST_AL_COMMAND;
  670.  
  671. typedef    struct
  672. {
  673. RESPONSE_HEADER    header;
  674. int        failed_addr;
  675. } TEST_AL_RESPONSE;
  676.  
  677. typedef    struct
  678. {
  679. COMMAND_HEADER    header;
  680. int        location_to_test;
  681. } BYTE_TEST_COMMAND;
  682.  
  683. typedef struct
  684. {
  685. RESPONSE_HEADER    header;
  686. int        failed_byte;
  687. int        expected;
  688. int        got;
  689. } BYTE_TEST_RESPONSE;
  690.  
  691. typedef    struct
  692. {
  693. int    length;
  694. int    command_id;
  695. int    caller_pid;
  696. int    address_to_monitor;
  697. } MONITOR_COMMAND;
  698.  
  699. typedef    struct
  700. {
  701. RESPONSE_HEADER    response;
  702. int    address_to_monitor;
  703. int    value_of_register;
  704. } MONITOR_RESPONSE;
  705.  
  706. typedef struct
  707. {
  708. COMMAND_HEADER header;
  709. int smi_fifo_size;
  710. } SIZE_SMO_FIFO_COMMAND;
  711.  
  712. typedef struct
  713. {
  714. RESPONSE_HEADER response;
  715. int smo_fifo_size;
  716. } SIZE_SMO_FIFO_RESPONSE;
  717.  
  718. typedef    struct
  719. {
  720. int    length;
  721. int    command_id;
  722. int    caller_pid;
  723. int    i_field;
  724. int    usleep_counts;
  725. } MAKE_CONNECTION_COMMAND;
  726.  
  727. typedef    struct
  728. {
  729. RESPONSE_HEADER    response;
  730. int    hppi_status_register;
  731. } MAKE_CONNECTION_RESPONSE;
  732.  
  733. typedef    struct
  734. {
  735. int    length;
  736. int    command_id;
  737. int    caller_pid;
  738. int    priority;
  739. } BREAK_CONNECTION_COMMAND;
  740.  
  741. typedef    struct
  742. {
  743. RESPONSE_HEADER    response;
  744. int    hppi_status_register;
  745. } BREAK_CONNECTION_RESPONSE;
  746.  
  747. typedef    struct
  748. {
  749. int    length;
  750. int    command_id;
  751. int    caller_pid;
  752. int    length_of_short_burst;
  753. int    short_burst_goes_first;
  754. int    full_burst_count;
  755. int    first_data_to_send;
  756. int    increment_factor;
  757. int    ready_timeout_limit;
  758. } SEND_BURST_COMMAND;
  759.  
  760. typedef    struct
  761. {
  762. RESPONSE_HEADER    response;
  763. int    hppi_status_register;
  764. int    burst_sent;
  765. int    burst_number_when_failure_occured;
  766. } SEND_BURST_RESPONSE;
  767.  
  768. typedef    struct
  769. {
  770. int    length;
  771. int    command_id;
  772. int    caller_pid;
  773. int    i_field;
  774. int    length_of_short_burst;
  775. int    short_burst_goes_first;
  776. int    full_burst_count;
  777. int    first_data_to_send;
  778. int    increment_factor;
  779. int    ready_timeout_limit;
  780. } HPPIS_SESSION_COMMAND;
  781.  
  782. typedef    struct
  783. {
  784. RESPONSE_HEADER    response;
  785. int    hppi_status_register;
  786. int    burst_sent;
  787. int    burst_number_when_failure_occured;
  788. } HPPIS_SESSION_RESPONSE;
  789.  
  790. typedef    struct
  791. {
  792. int    length;
  793. int    command_id;
  794. int    caller_pid;
  795. } HPPI_RECEIVE_COMMAND;
  796.  
  797. typedef    struct
  798. {
  799. RESPONSE_HEADER    response;
  800. } HPPI_RECEIVE_RESPONSE;
  801.  
  802. #define    WORDS_IN_FULL_BURST    256
  803.  
  804. typedef    struct
  805. {
  806. RESPONSE_HEADER    response;
  807. int    length_of_burst_recieved;
  808. int    burst_data [WORDS_IN_FULL_BURST];
  809. } BURST_DATA;
  810. #endif
  811.  
  812. #endif /* _HPPI */
  813.